<?php

namespace Modules\Admin\Http\Controllers;

use App\Admin;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\AppAdminRequest;
use Spatie\Permission\Models\Role;

class AdminUserController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //获取用户列表数据
        //已经登陆的用户不再显示
        $admins = Admin::where('name', '!=', 'admin')->paginate(5);
        //dd($admins);
        //加载模板 分配变量
        return view('admin::adminuser.index',compact('admins'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */


    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(Request $request,AppAdminRequest $appAdminRequest)
    {
        //获取post数据
        $post = $request->all();
        //dd($post);
        //修改密码
        $post['password'] = bcrypt($post['password']);
        //写入数据库
        Admin::create($post);
        //设置闪存信息
        session()->flash('success','添加成功');
        //跳转
        return redirect()->route('adminuser.index');



    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,$id,AppAdminRequest $appAdminRequest)
    {
//        dd(11);
       //找到要编辑的id号
        $admin =  Admin::find($id);
//        dd($admin);
      //验证
        $admin->name = $request->input('name');
        $admin->nickname = $request->input('nickname');
      //应该用户修改了密码,我们才将他的密码改成填写的新密码,如果没有填写,就不修改
        if ($request->input('password')){
            $admin->password = bcrypt($request->input('password'));
        }
        //存入数据库
        $admin->save();
        //设置闪存信息
        session()->flash('success','编辑成功');
        //跳转
        return redirect()->route('adminuser.index');



    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
      //执行删除
        Admin::destroy($id);
        //设置闪存
        session()->flash('success','删除成功');
        //跳转
        return redirect()->route('adminuser.index');
    }

    /**
     * 查看角色
     * @param $adminid
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function ShowRole($adminid){
        if ($adminid==1){
            session()->flash('danger','你没有权限访问');
            return back();
        }
        //根据$adminid获取对应的用户数据
        $admin = Admin::find($adminid);
        //dd($admin);
        //获取当前角色的所有数据
        //避免删掉网站站长这个角色
        $role = Role::where('name' , '!=' , config('hd_module.webmaster'))->get();
        //dd($role);

        //加载模板
        return view('admin::adminuser.showrole',compact('admin','role'));

    }

    /**
     * 分配角色功能
     * @param $adminid
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function DistributionRole($adminid,Request $request){

        //判断如果没选的话，就提醒至少选一个
        if (!$request->input('name')){
            //设置闪存信息
            session()->flash('danger','至少选一个!!!或者返回');
            //返回上一级
            return back();
        }
        //先通过$adminid找到对应要添加角色的用户
        $admin = Admin::find($adminid);
        //将角色数据同步到当前操作的用户
        //在这里会报错 syncRoles不存在
        //原因：因为Admin模型中不存在 角色添加不是laravel框架自己0的结构是由组件给的
        //解决：在模型中导入HasRoles;
        $admin->syncRoles($request->input('name'));
        //设置闪存信息
        session()->flash('success','角色分配成功');
        //跳转
        return redirect()->route('adminuser.index');



    }













}
